層次聚類(Hierarchical Clustering)是一種無監督學習算法,廣泛應用於探索數據的自然分組。該算法通過構建一個層次結構的樹形圖(樹狀圖或樹狀結構,稱為樹狀圖或dendrogram)來表示數據點之間的相似性和嵌套關係。與K-means這類需要預先指定聚類數量的算法不同,層次聚類不需要指定簇的數量,並且可以生成一個完整的聚類層次結構。
層次聚類主要有兩種方法:
自下而上聚類(Agglomerative Clustering):
自上而下聚類(Divisive Clustering):
優點:
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from scipy.cluster.hierarchy import dendrogram, linkage
iris = load_iris()
X = iris.data
# 使用層次聚類進行聚類
linked = linkage(X, method='ward')
# 繪製樹狀圖
plt.figure(figsize=(10, 7))
dendrogram(linked,
orientation='top',
labels=iris.target,
distance_sort='descending',
show_leaf_counts=True)
plt.title('Iris Dataset Dendrogram')
plt.xlabel('Sample Index')
plt.ylabel('Distance')
plt.show()